<?php

namespace app\helper;

use think\admin\Helper;
use think\facade\Cache;

/**
 * 辅种缓存
 */
class CacheHelper extends Helper
{
    /**
     * 清除所有辅种缓存
     * @return void
     */
    public static function ClearAllPiecesHash()
    {
        Cache::store('fz_file')->tag('pieces_hash_all')->clear();
        sysoplog('系统运维管理', '清空所有站点辅种缓存');
    }

    /**
     * 清除指定站点辅种缓存
     * @param string $siteurl
     * @return void
     */
    public static function ClearPiecesHash(string $siteurl)
    {
        $key = self::key($siteurl);
        Cache::store('fz_file')->delete($key);
        sysoplog('系统运维管理', '清空' . $siteurl . '辅种缓存');
    }

    /**
     * 重置指定站点辅种缓存
     * @param string $siteurl
     * @param array $pieces_hash
     * @param array $tag
     * @return void
     */
    public static function SetPiecesHash(string $siteurl, array $pieces_hash, array $tag = [])
    {
        $key = self::key($siteurl);
        // 为了只清除辅种的缓存
        $tags = array("pieces_hash_all");

        if(count($tag) > 0){
            $tags = array_merge($tags, $tag);
        }

        Cache::store('fz_file')->tag($tags)->set($key, $pieces_hash);
    }

    /**
     * 获取指定站点辅种缓存
     * @param string $siteurl
     * @return array
     */
    public static function GetPiecesHash(string $siteurl) : array
    {
        $key = self::key($siteurl);
        return Cache::store('fz_file')->get($key) ?? [];
    }

    /**
     * 缓存key
     * @param string $siteurl
     * @return string
     */
    private static function key(string $siteurl) : string
    {
        return "pieces_hash" . md5($siteurl);
    }
}